package innova.controlador;

import innova.modelo.CentroFormacion;
import innova.modelo.Idea;
import innova.modelo.Usuario;

import java.util.ArrayList;
import java.util.List;

public class CentroFormacionController {

	private List<CentroFormacion> centrosFormacion;
	
	public CentroFormacionController() {
		this.centrosFormacion = new ArrayList<>();
                
                //Creando algunas ideas
                IdeaController ideaController = new IdeaController();
                Idea i1 = new Idea();
                i1.setIdIdea(ideaController.getCodigoAutomatico());
                i1.setTituloIdea("Idea 001");
                i1.setDescripcionIdea("Descripción de la idea 001.");
                //i1.setUsuario(u1);
                ideaController.registrar(i1);
                
                Idea i2 = new Idea();
                i2.setIdIdea(ideaController.getCodigoAutomatico());
                i2.setTituloIdea("Idea 002");
                i2.setDescripcionIdea("Descripción de la idea 002.");
                //i2.setUsuario(u1);
                ideaController.registrar(i2);
                
                Idea i3 = new Idea();
                i3.setIdIdea(ideaController.getCodigoAutomatico());
                i3.setTituloIdea("Idea 003");
                i3.setDescripcionIdea("Descripción de la idea 003.");
                //i3.setUsuario(u1);
                ideaController.registrar(i3);
                
                Idea i4 = new Idea();
                i4.setIdIdea(ideaController.getCodigoAutomatico());
                i4.setTituloIdea("Idea 004");
                i4.setDescripcionIdea("Descripción de la idea 004.");
                //i4.setUsuario(u1);
                ideaController.registrar(i4);
                
                //Creando algunos usuario
                UsuarioController usuarioController = new UsuarioController();
		Usuario u1 = new Usuario();
		u1.setIdUsuario(usuarioController.getCodigoAutomatico());
		u1.setNombresUsuario("Joan");
		u1.setApellidoPaternoUsuario("Carbajal");
		u1.setApellidoMaternoUsuario("Guevara");
                usuarioController.registrar(u1);
		
		Usuario u2 = new Usuario();
		u2.setIdUsuario(usuarioController.getCodigoAutomatico());
		u2.setNombresUsuario("Lisbeth");
		u2.setApellidoPaternoUsuario("Osorio");
		u2.setApellidoMaternoUsuario("Guerra");
                usuarioController.registrar(u2);
		
		Usuario u3 = new Usuario();
		u3.setIdUsuario(usuarioController.getCodigoAutomatico());
		u3.setNombresUsuario("Olga");
		u3.setApellidoPaternoUsuario("Rojas");
		u3.setApellidoMaternoUsuario("Orbegoso");
                usuarioController.registrar(u3);
		
		Usuario u4 = new Usuario();
		u4.setIdUsuario(usuarioController.getCodigoAutomatico());
		u4.setNombresUsuario("Nelson");
		u4.setApellidoPaternoUsuario("Zanabria");
		u4.setApellidoMaternoUsuario("Tah");
                usuarioController.registrar(u4);
                
                
                //Asignando las ideas a un usuario
                List<Idea> ideasUsuario = new ArrayList<>();
                ideasUsuario.add(i1);
                ideasUsuario.add(i2);
                ideasUsuario.add(i3);
                ideasUsuario.add(i4);
                u1.setIdeas(ideasUsuario);
                
                
                //Creando unos centros de formación
                CentroFormacion cf1 = new CentroFormacion();
                cf1.setIdCentroFormacion(getCodigoAutomatico());
                cf1.setNombreCentroFormacion("Universidad Peruana de Ciencias Aplicadas");
                cf1.setTipoCentroFormacion("U");
                cf1.setUrlCentroFormacion("http://www.upc.edu.pe");
                cf1.setLogoCentroFormacion("logo-upc.png");
                cf1.setCobranzas(null);
                
                //Incluyendo a los usuarios al centro de formación
                List<Usuario> usuarios = new ArrayList<>();
                usuarios.add(u1);
                usuarios.add(u2);
                
                cf1.setUsuarios(usuarios);
                
                registrar(cf1);
                
                CentroFormacion cf2 = new CentroFormacion();
                cf2.setIdCentroFormacion(getCodigoAutomatico());
                cf2.setNombreCentroFormacion("Instituto Superior Tecnologico CESCA");
                cf2.setTipoCentroFormacion("I");
                cf2.setUrlCentroFormacion("http://www.cesca.edu.pe");
                cf2.setLogoCentroFormacion("logo-cesca.png");
                cf2.setCobranzas(null);
                registrar(cf2);
                
                CentroFormacion cf3 = new CentroFormacion();
                cf3.setIdCentroFormacion(getCodigoAutomatico());
                cf3.setNombreCentroFormacion("Universidad de Piura");
                cf3.setTipoCentroFormacion("U");
                cf3.setUrlCentroFormacion("http://www.up.edu.pe");
                cf3.setLogoCentroFormacion("logo-up.png");
                cf3.setCobranzas(null);
                registrar(cf3);
	}
	
	public List<CentroFormacion> buscar() {
		//Listando todos los centros de formacion
		return centrosFormacion;
	}
	
	public List<CentroFormacion> buscar(CentroFormacion centroFormacion) {
		//Creando un listado de resultado
		List<CentroFormacion> resultado = new ArrayList<>();
		
		//Recorriendo los centros de formaci�n
		for(CentroFormacion item : centrosFormacion) {
			//Verificando si es igual por el codigo
			if(item.getIdCentroFormacion() == centroFormacion.getIdCentroFormacion()) {
				//Asignando el item al resultado
				resultado.add(item);
			}
		}
		
		//Devolviendo el resultado
		return resultado;
	}
	
	public void eliminar(CentroFormacion centroFormacion) {
		//Eliminando el centro de formaci�n de la lista
		centrosFormacion.remove(centroFormacion);
	}
	
	public void registrar(CentroFormacion centroFormacion) {
		//Guardando en el listado
		centrosFormacion.add(centroFormacion);
	}
	
	public int getCodigoAutomatico() {
		//Contando la cantidad de centros de formaci�n;
		int codigoAutomatico = 0;
		
		if(centrosFormacion == null) {
			//Asignando el valor
			codigoAutomatico = 1;
		} else {
			//Obteniendo la cantidad
			int cantidad = centrosFormacion.size();
			codigoAutomatico = cantidad + 1;
		}
		
		return codigoAutomatico;
	}
	
        public boolean existe(CentroFormacion centroFormacion) {
		//Recorriendo las ideas
		for(CentroFormacion item : centrosFormacion) {
			//Verificando si es igual por el t�tulo o palabras claves
			if(item.getUrlCentroFormacion().equals(centroFormacion.getUrlCentroFormacion())) {
				//Si existe
				return true;
			}
		}

		return false;
	}
        
        public int getCantidadIdea(CentroFormacion centroFormacion) {
                int cantidad = 0;
                
                //Analizando la cantidad de usuario que tiene el centro de formación
                List<Usuario> usuariosCentroFormacion = centroFormacion.getUsuarios();
                
                if(usuariosCentroFormacion != null) {
                        //Recorriendo los usuarios
                        for(Usuario item : usuariosCentroFormacion) {
                                //Obteniendo las ideas de cada usuario
                                List<Idea> ideasUsuario = item.getIdeas();
                                
                                //Analizando el contenido
                                if(ideasUsuario != null) {
                                        //Acumulando la cantidad de ideas
                                        cantidad += ideasUsuario.size();
                                } else {
                                        //No se obtuvo información de ideas.
                                }
                        }
                } else {
                        //No se obtuvo resultados.
                        cantidad = 0;
                }
                
                return cantidad;
        }
        
}
